package gspushmq.v1.subscribe.send.core;

import java.util.HashMap;
import java.util.Map;

import org.java_websocket.WebSocket;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import gogoal.api.GoGoalAPI;
import gspushmq.model.GsConfig;
import gspushmq.model.Message;
import gspushmq.util.GGLogger;
import gspushmq.v1.save.SaveSendRecord;
import gspushmq.v1.thread.GGThreadPool;

public class GGMessageSend {

	/**
	 * 发送提示消息给客户端
	 * @param message
	 * @param wst
	 * @param msg
	 * @author yutao
	 * @date 2018年11月1日下午8:06:28
	 */
	public static void sendMsgString(Message message, WebSocket wst, String msg) {
		if(wst.isOpen()){
			//把需要推送的消息都发送出去
			Map<String, Object> result = new HashMap<>();
			result.put("data", msg);
			//表示有效
			result.put("code", 0);
			result.put("request_id", message.getRequest_id());
			wst.send(JSON.toJSONString(result));
			writeLog(message, result);
		}
	}
	
	/**
	 * 
	 * 方法描述 TODO
	 *
	 * @param params
	 * @param apiUrl
	 * @return
	 * @author yutao
	 * @date 2019年1月16日 下午10:08:37
	 */
	public static JSONObject commonUrl(Map<String, String> params, String apiUrl) {
		
		try {
			String result = GoGoalAPI.get(GsConfig.config.getDomain(), GsConfig.config.getAppKey(), GsConfig.config.getAppSecret(), apiUrl, params);
			JSONObject jsonObject = JSON.parseObject(result);
			Integer code = jsonObject.getInteger("code");
			if(code != 0){
				if (code != 1001) {
					GGLogger.error(GGMessageSend.class, "API执行异常:" + apiUrl + ";params:" + params + ";result:" + jsonObject.toJSONString());
				}
				return null;
			}
			return jsonObject;
		} catch (Exception e) {
			GGLogger.error(GGMessageSend.class, "API请求异常:" + apiUrl + ";params:" + params + ";exception:" + e);
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 直接发送提示信息的日志
	 * @param message
	 * @param result
	 * @author yutao
	 * @date 2018年11月29日下午1:47:38
	 */
	private static void writeLog(Message message, Map<String, Object> result) {
		SaveSendRecord.save(message, result);
	}
	
}
